package main

import (
	"FileServer/server"
	"FileServer/utils"
	"bufio"
	"flag"
	"fmt"
	"github.com/iwen-conf/colorprint/clr"
	"os"
	"path/filepath"
	"strings"
)

// 获取用户输入
func getUserInput(prompt string) string {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print(clr.FGColor(prompt, clr.Cyan))
	input, _ := reader.ReadString('\n')
	return strings.TrimSpace(input)
}

func main() {
	// 命令行参数
	dir := flag.String("path", "", "要共享的目录路径")
	port := flag.Int("port", 8080, "起始监听端口，如果被占用会自动尝试其他端口")
	flag.Parse()

	// 如果没有指定目录，请求输入
	if *dir == "" {
		*dir = getUserInput("\n请输入要共享的目录路径 (直接回车使用当前目录): ")
		if *dir == "" {
			*dir = "."
		}
	}

	// 获取绝对路径
	absPath, err := filepath.Abs(*dir)
	if err != nil {
		fmt.Println(clr.FGColor(fmt.Sprintf("❌ 无法解析目录路径: %v", err), clr.Red))
		os.Exit(1)
	}

	// 验证目录
	if err := utils.ValidateDir(absPath); err != nil {
		fmt.Println(clr.FGColor(fmt.Sprintf("❌ 目录验证失败: %v", err), clr.Red))
		os.Exit(1)
	}

	// 启动服务器
	server.StartServer(*port, absPath)
}
